﻿using System;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;

namespace CLM.Gestao.Vendas.UI
{
    public partial class ImportarCustoUnitarioProdutos : Form
    {
        #region Construtor

        public ImportarCustoUnitarioProdutos()
        {
            try
            {
                InitializeComponent();
                var pos = this.PointToScreen(lblTitulo.Location);
                pos = picTitulo.PointToClient(pos);
                lblTitulo.Parent = picTitulo;
                lblTitulo.Location = pos;
                lblTitulo.BackColor = Color.Transparent;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        #endregion Construtor

        #region Eventos

        private void btnCustoUnitarioProdutos_Click(object sender, EventArgs e)
        {
            txtCustoUnitarioProdutos.Text = OpenFile();
        }

        private void btnImportar_Click(object sender, EventArgs e)
        {
            ValidarInterface();
            Importar();
        }

        void CustoUnitarioProdutos_OnImportData(object sender, Importacao.ImportDataEventArgs e)
        {
            if (e.Tipo == Importacao.ImportDataEventArgs.type.Processo)
            {
                pgbProgresso.Maximum = e.Total;
                pgbProgresso.Value = e.Atual;

                lblMensagem.Text = String.Format("{0} - {1} de {2}", e.Mensagem, e.Atual, e.Total);
            }
            else
                lblMensagem.Text = String.Format("{0}", e.Mensagem);

            Application.DoEvents();
        }

        #endregion Eventos

        #region Métodos Privados

        private void ValidarInterface()
        {
            if (string.IsNullOrWhiteSpace(txtCustoUnitarioProdutos.Text))
                throw new Exception("Por favor, selecione um arquivo para efetuar a importação.");
        }

        private void Importar()
        {
            try
            {
                Administrador.BLL.CustoUnitario CustoUnitario = new Administrador.BLL.CustoUnitario();
                CustoUnitario.OnImportData += new Importacao.ImportDataEventHandler(CustoUnitarioProdutos_OnImportData);

                // Importa o Custo Unitário de Produtos
                if (!string.IsNullOrWhiteSpace(txtCustoUnitarioProdutos.Text)) 
                    CustoUnitario.ImportaCustoUnitarioProdutos(ofdImportar.FileNames.First());

                CustoUnitario.OnImportData -= new Importacao.ImportDataEventHandler(CustoUnitarioProdutos_OnImportData);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private string OpenFile()
        {
            string FileName = string.Empty;
            try
            {
                this.ofdImportar.Multiselect = false;
                this.ofdImportar.Title = "Selecionar Arquivo para Importação";
                this.ofdImportar.InitialDirectory = "C:\\";
                this.ofdImportar.FileName = "Selecione o arquivo...";
                this.ofdImportar.Filter = "Arquivos do Excel (*.xlsm;*.xlsx;*.xls)|*.xlsm;*.xlsx;*.xls";
                this.ofdImportar.CheckFileExists = true;
                this.ofdImportar.CheckPathExists = true;
                this.ofdImportar.FilterIndex = 2;
                this.ofdImportar.RestoreDirectory = true;
                this.ofdImportar.ReadOnlyChecked = true;
                this.ofdImportar.ShowReadOnly = true;

                DialogResult dr = this.ofdImportar.ShowDialog();
                if (dr == System.Windows.Forms.DialogResult.OK)
                    FileName = ofdImportar.FileNames.First();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            return FileName;
        }

        #endregion Métodos Privados
    }
}